昨天說到要跑範例程式,但是只有做到下載資料集,以及切分資料集,今天來建立模型
model = keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28, 28]))
model.add(keras.layers.Dense(300, activation="relu"))
model.add(keras.layers.Dense(100, activation="relu"))
model.add(keras.layers.Dense(10, activation="softmax"))
我們來了解一下這個程式
第一行是建立一個Sequential的模型,這是keras神經網路種類中最簡單的
接下來建立第一層,並將它加入模型。這是一個Flatten層,功能是將每一個輸入的圖片都轉換成1D的陣列
第二層是一個Dense層,有300個神經元,使用Relu來當作激活函數
第三層也是一個Dense層,有100個神經元,也是使用Relu來當作激活函數
最後一層是一個Dense層,它有10個神經元,使用softmax當作激活函數
model.summary()
模型的summary()方法可以顯示模型的每一層,包括每一層的名稱、輸出外型(Output shape),以及訓練參數量。摘要的結尾是參數的總數,包括可以訓練的和不可訓練的參數。
Dense層通常會有很多參數。第一個隱藏層就有235,500個參數,所以模型有大量的靈活度可以擬合訓練資料,但是這也代表模型會有過擬合的問題。
keras.utils.plot_model(model)
這個function可以用來產生模型的圖像
今天講完如何建立模型,明天會講到模型的compile跟fit,這樣就完成一次完整的訓練了